﻿// Tischpreiskegeln
//
// vorgesehen für die FF Feichtenberg zur Unterstützung des alljährlich stattfindenen
// Tischpreiskegelns.
// 
// Autoren:
// Eder Philipp S0910438031
// Lutt Martin  S0910438076
// (FH Wels)
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace fff_preiskegeln
{
    /// <summary>
    /// Hauptform fürs Preiskegeln.
    /// Die Datenbankverbindung wird hier geöffnet.
    /// Alle weiteren Fenster werden von hier aus gestartet.
    /// </summary>
    public partial class frmstart : Form
    {
        #region Menber

        /// <summary>
        /// Das Objekt der Datenbankverbindung wird einmal in der Hauptform angelegt und geöffnet, und allen weiteren Fenstern übergeben
        /// </summary>
        private dbVerbindung datenbank;

        #endregion

        #region Konstruktor

        /// <summary>
        /// Konstruktor, keine relevante Funktionalität
        /// </summary>
        public frmstart()
        {
            InitializeComponent();
        }

        #endregion

        #region Events

        /// <summary>
        /// Schließt die Form
        /// </summary>
        private void btnclose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        /// <summary>
        /// Öffnet die Form zur Schusseingabe
        /// </summary>
        private void btneingabe_Click(object sender, EventArgs e)
        {
            // Anmelde Fenster öffnen
            Password pwForm = new Password(datenbank);
            pwForm.ShowDialog();

            // Prüfen ob Anmeldung erfolgreich, wenn ja öffne das weitere Fenster
            if (pwForm.PasswordOk && (pwForm.Bereich == 1 || pwForm.Bereich == 2 || pwForm.Bereich == 3))
            {
                frmAuswahlSpieler dialog = new frmAuswahlSpieler(datenbank);
                dialog.ShowDialog();
            }
            else
            {
                MessageBox.Show("Sie haben keine ausreichenden Rechte für diese Funktion", "Zugriff Verweigert");
            }
        }
        /// <summary>
        /// Öffnet die Form zum Spieler Anmelden
        /// </summary>
        private void btnanmeldung_Click(object sender, EventArgs e)
        {
            // Anmelde Fenster öffnen
            Password pwForm = new Password(datenbank);
            pwForm.ShowDialog();

            // Prüfen ob Anmeldung erfolgreich, wenn ja öffne das weitere Fenster
            if (pwForm.PasswordOk && (pwForm.Bereich == 2 || pwForm.Bereich == 3))
            {
                frmmain dialog = new frmmain(datenbank);
                dialog.ShowDialog();
            }
            else
            {
                MessageBox.Show("Sie haben keine ausreichenden Rechte für diese Funktion", "Zugriff Verweigert");
            }
        }
        /// <summary>
        /// Klick Event zum manuelen öffnen der Datenbankverbindung
        /// </summary>
        private void btnDBOeffnen_Click(object sender, EventArgs e)
        {
            this.DatenbankOeffnen();
        }
        /// <summary>
        /// OnLoad Event. Beim Laden der Form wird eine XML Datei geöffnet, in jener die 
        /// Zugangsdaten abgespeichert sind
        /// </summary>
        private void frmstart_Load(object sender, EventArgs e)
        {
            try
            {
                DataTable dt_config = new DataTable();
                // zuerst die XML-Datei in eine DataTable einlesen
                //dt_config.ReadXml("config.xml", XmlReadMode.ReadSchema);
                dt_config.ReadXml("config.xml");
                // Dann die Erste DataRow verwenden
                DataRow dr_config = dt_config.Rows[0];
                // und damit dann die Werte zuweisen
                this.datenbank = new dbVerbindung(
                    dr_config["DRIVER"].ToString(), 
                    dr_config["SERVER"].ToString(), 
                    dr_config["DATABASE"].ToString(),
                    dr_config["UID"].ToString(), 
                    dr_config["PASSWORD"].ToString(), 
                    dr_config["OPTION"].ToString()
                    );
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\n\n Bitte geben Sie die Eingangsdaten über den Button DB Öffnen ein !!!", "Fehler");
            }
        }

        #endregion

        #region private Methoden

        /// <summary>
        /// Legt das Objekt der Klasse für die Datenbankverbindung an und öffnet die Verbindung zur Datenbank
        /// </summary>
        private void DatenbankOeffnen()
        {
            // Log In Fenster für die Datenbankverbindung
            dbAnmeldunedaten anmelden = new dbAnmeldunedaten();
            anmelden.ShowDialog();
            // Verbindung öffnen
            try
            {
                this.datenbank = new dbVerbindung("MySQL ODBC 5.1 Driver", anmelden.server, anmelden.datenbank,
                                                  anmelden.uid,
                                                  anmelden.pw, "3");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Fehler");
            }
        }

        #endregion

        // #####################################################################################################
        // 28.06.2011 Eder Philipp
        //  wurde zum einmaligen Schreiben der Zugangsdaten der DB benutzt wurde aber wieder dem Benutzer gesperrt
        // indem im Window der Button unsichtbar gemacht wurde
        private void btnzugangsdaten_Click(object sender, EventArgs e)
        {
            // Zuerst eine leere DataTable erstellen
            DataTable dt_config = new DataTable("Zugangsdaten");
            // dann die spalten hinzufügen
            dt_config.Columns.Add("DRIVER");
            dt_config.Columns.Add("SERVER");
            dt_config.Columns.Add("DATABASE");
            dt_config.Columns.Add("UID");
            dt_config.Columns.Add("PASSWORD");
            dt_config.Columns.Add("OPTION");
            // und nun eine Zeile einfügen und füllen
            DataRow dr_config = dt_config.NewRow();
            dr_config["DRIVER"] = "{MySQL ODBC 5.1 Driver}";
            dr_config["SERVER"] = "localhost";
            dr_config["DATABASE"] = "preiskegeln";
            dr_config["UID"] = "user";
            dr_config["PASSWORD"] = "123456";
            dr_config["OPTION"] = "3";
            dt_config.Rows.Add(dr_config);
            // zum schluss wird die DataTable als XML-Datei gespeichert
            dt_config.WriteXml("config.xml", XmlWriteMode.WriteSchema);
        }
        // #####################################################################################################

    }
}
